function visualize_tdma_frame(tdma_frames, num_users, active_users, incomplete_frame)
% visualize_tdma_frame - 可视化TDMA帧结构
%
% 输入参数:
%   tdma_frames     - TDMA帧数据
%   num_users       - 用户数量
%   active_users    - 活跃用户列表
%   incomplete_frame - 是否为不完整帧(有空闲时隙)

% 获取帧数和每帧长度
[num_frames, frame_length] = size(tdma_frames);

% 只显示前两帧数据
frames_to_show = min(2, num_frames);

% 创建新图形
figure('Name', 'TDMA帧结构', 'Position', [100, 100, 1000, 400]);

for f = 1:frames_to_show
    subplot(frames_to_show, 1, f);
    
    % 转换为图像便于可视化
    frame_img = repmat(tdma_frames(f, :), 10, 1);
    
    % 显示帧数据
    imagesc(frame_img);
    colormap(gray);  % 使用灰度图
    
    % 标记时隙边界
    hold on;
    slot_length = frame_length / 8;  % 假设8个时隙
    for i = 1:7
        x_pos = i * slot_length;
        plot([x_pos, x_pos], [0.5, 10.5], 'r-', 'LineWidth', 2);
    end
    
    % 在每个时隙中间标记用户ID
    for slot = 1:8
        x_center = (slot - 0.5) * slot_length;
        user = mod(slot-1, num_users) + 1;
        
        if ~incomplete_frame || ismember(user, active_users)
            text(x_center, 5, ['用户 ' num2str(user)], 'Color', 'red', 'FontWeight', 'bold', ...
                 'HorizontalAlignment', 'center');
        else
            text(x_center, 5, '空闲', 'Color', 'blue', 'FontWeight', 'bold', ...
                 'HorizontalAlignment', 'center');
        end
    end
    
    title(['TDMA帧 #' num2str(f)]);
    ylabel('样本');
    xlabel('比特位置');
    
    % 隐藏y轴刻度
    yticks([]);
    
    % 设置x轴刻度为时隙标记
    xticks((1:8) * slot_length - slot_length/2);
    xticklabels({'时隙1', '时隙2', '时隙3', '时隙4', '时隙5', '时隙6', '时隙7', '时隙8'});
    
    hold off;
end

% 添加总标题
sgtitle('TDMA帧结构 - 时间划分多址接入');

end 